package com.gnerv.sylvanas.business.manage.repository.mapper;

import com.gnerv.sylvanas.business.manage.model.dto.ApiDTO;
import com.gnerv.sylvanas.business.manage.model.entity.Api;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * @author Gnerv LiGen
 */
@Mapper
public interface ApiMapper {

    int insert(@Param(value = "api") Api api);

    int deleteByUkId(@Param(value = "ukId") String ukId);

    int updateByUkId(@Param(value = "api") Api api);

    ApiDTO selectByUkId(@Param(value = "ukId") String ukId);

    String selectAuthorityByUriAndType(@Param(value = "uri") String uri, @Param(value = "type") String type);

    List<ApiDTO> selectListByName(@Param(value = "name") String name,
                                  @Param(value = "limitStart") int limitStart,
                                  @Param(value = "limitSize") int limitSize);

    List<ApiDTO> selectListByRoleUkId(@Param(value = "roleUkId") String roleUkId);

    List<ApiDTO> selectListByGroupUkId(@Param(value = "groupUkId") String groupUkId,
                                       @Param(value = "limitStart") int limitStart,
                                       @Param(value = "limitSize") int limitSize);

    Set<String> selectListAuthorityByAccountUkId(@Param(value = "accountUkId") String accountUkId);

    int selectCountByName(@Param(value = "name") String name);

    int selectCountByUriAndType(@Param(value = "uri") String uri, @Param(value = "type") String type);

    List<ApiDTO> selectListByAccountUkId(@Param(value = "accountUkId") String accountUkId);
}




